home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1997 April / macformat-049.iso / mac / Shareware Plus / Developers / dropg++ / usr / include / termios.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-02-20  |  8.7 KB  |  279 lines  |  [TEXT/R*ch]

  1. /*
  2.  * Copyright (c) 1988, 1989, 1993, 1994
  3.  *    The Regents of the University of California.  All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. All advertising materials mentioning features or use of this software
  14.  *    must display the following acknowledgement:
  15.  *    This product includes software developed by the University of
  16.  *    California, Berkeley and its contributors.
  17.  * 4. Neither the name of the University nor the names of its contributors
  18.  *    may be used to endorse or promote products derived from this software
  19.  *    without specific prior written permission.
  20.  *
  21.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31.  * SUCH DAMAGE.
  32.  *
  33.  *    @(#)termios.h    8.3 (Berkeley) 3/28/94
  34.  */
  35.  
  36. #ifndef _SYS_TERMIOS_H_
  37. #define _SYS_TERMIOS_H_
  38.  
  39. /* 
  40.  * Special Control Characters 
  41.  *
  42.  * Index into c_cc[] character array.
  43.  *
  44.  *    Name         Subscript    Enabled by 
  45.  */
  46. #define    VEOF        0    /* ICANON */
  47. #define    VEOL        1    /* ICANON */
  48. #ifndef _POSIX_SOURCE
  49. #define    VEOL2        2    /* ICANON */
  50. #endif
  51. #define    VERASE        3    /* ICANON */
  52. #ifndef _POSIX_SOURCE
  53. #define VWERASE     4    /* ICANON */
  54. #endif 
  55. #define VKILL        5    /* ICANON */
  56. #ifndef _POSIX_SOURCE
  57. #define    VREPRINT     6    /* ICANON */
  58. #endif
  59. /*            7       spare 1 */
  60. #define VINTR        8    /* ISIG */
  61. #define VQUIT        9    /* ISIG */
  62. #define VSUSP        10    /* ISIG */
  63. #ifndef _POSIX_SOURCE
  64. #define VDSUSP        11    /* ISIG */
  65. #endif
  66. #define VSTART        12    /* IXON, IXOFF */
  67. #define VSTOP        13    /* IXON, IXOFF */
  68. #ifndef _POSIX_SOURCE
  69. #define    VLNEXT        14    /* IEXTEN */
  70. #define    VDISCARD    15    /* IEXTEN */
  71. #endif
  72. #define VMIN        16    /* !ICANON */
  73. #define VTIME        17    /* !ICANON */
  74. #ifndef _POSIX_SOURCE
  75. #define VSTATUS        18    /* ICANON */
  76. /*            19       spare 2 */
  77. #endif
  78. #define    NCCS        20
  79.  
  80. #define _POSIX_VDISABLE    ((unsigned char)'\377')
  81.  
  82. #ifndef _POSIX_SOURCE
  83. #define CCEQ(val, c)    (c == val ? val != _POSIX_VDISABLE : 0)
  84. #endif
  85.  
  86. /*
  87.  * Input flags - software input processing
  88.  */
  89. #define    IGNBRK        0x00000001    /* ignore BREAK condition */
  90. #define    BRKINT        0x00000002    /* map BREAK to SIGINTR */
  91. #define    IGNPAR        0x00000004    /* ignore (discard) parity errors */
  92. #define    PARMRK        0x00000008    /* mark parity and framing errors */
  93. #define    INPCK        0x00000010    /* enable checking of parity errors */
  94. #define    ISTRIP        0x00000020    /* strip 8th bit off chars */
  95. #define    INLCR        0x00000040    /* map NL into CR */
  96. #define    IGNCR        0x00000080    /* ignore CR */
  97. #define    ICRNL        0x00000100    /* map CR to NL (ala CRMOD) */
  98. #define    IXON        0x00000200    /* enable output flow control */
  99. #define    IXOFF        0x00000400    /* enable input flow control */
  100. #ifndef _POSIX_SOURCE
  101. #define    IXANY        0x00000800    /* any char will restart after stop */
  102. #define IMAXBEL        0x00002000    /* ring bell on input queue full */
  103. #endif  /*_POSIX_SOURCE */
  104.  
  105. /*
  106.  * Output flags - software output processing
  107.  */
  108. #define    OPOST        0x00000001    /* enable following output processing */
  109. #ifndef _POSIX_SOURCE
  110. #define ONLCR        0x00000002    /* map NL to CR-NL (ala CRMOD) */
  111. #define OXTABS        0x00000004    /* expand tabs to spaces */
  112. #define ONOEOT        0x00000008    /* discard EOT's (^D) on output) */
  113. #endif  /*_POSIX_SOURCE */
  114.  
  115. /*
  116.  * Control flags - hardware control of terminal
  117.  */
  118. #ifndef _POSIX_SOURCE
  119. #define    CIGNORE        0x00000001    /* ignore control flags */
  120. #endif
  121. #define CSIZE        0x00000300    /* character size mask */
  122. #define     CS5            0x00000000        /* 5 bits (pseudo) */
  123. #define     CS6            0x00000100        /* 6 bits */
  124. #define     CS7            0x00000200        /* 7 bits */
  125. #define     CS8            0x00000300        /* 8 bits */
  126. #define CSTOPB        0x00000400    /* send 2 stop bits */
  127. #define CREAD        0x00000800    /* enable receiver */
  128. #define PARENB        0x00001000    /* parity enable */
  129. #define PARODD        0x00002000    /* odd parity, else even */
  130. #define HUPCL        0x00004000    /* hang up on last close */
  131. #define CLOCAL        0x00008000    /* ignore modem status lines */
  132. #ifndef _POSIX_SOURCE
  133. #define CCTS_OFLOW    0x00010000    /* CTS flow control of output */
  134. #define CRTSCTS        CCTS_OFLOW    /* ??? */
  135. #define CRTS_IFLOW    0x00020000    /* RTS flow control of input */
  136. #define    MDMBUF        0x00100000    /* flow control output via Carrier */
  137. #endif
  138.  
  139.  
  140. /* 
  141.  * "Local" flags - dumping ground for other state
  142.  *
  143.  * Warning: some flags in this structure begin with
  144.  * the letter "I" and look like they belong in the
  145.  * input flag.
  146.  */
  147.  
  148. #ifndef _POSIX_SOURCE
  149. #define    ECHOKE        0x00000001    /* visual erase for line kill */
  150. #endif  /*_POSIX_SOURCE */
  151. #define    ECHOE        0x00000002    /* visually erase chars */
  152. #define    ECHOK        0x00000004    /* echo NL after line kill */
  153. #define ECHO        0x00000008    /* enable echoing */
  154. #define    ECHONL        0x00000010    /* echo NL even if ECHO is off */
  155. #ifndef _POSIX_SOURCE
  156. #define    ECHOPRT        0x00000020    /* visual erase mode for hardcopy */
  157. #define ECHOCTL      0x00000040    /* echo control chars as ^(Char) */
  158. #endif  /*_POSIX_SOURCE */
  159. #define    ISIG        0x00000080    /* enable signals INTR, QUIT, [D]SUSP */
  160. #define    ICANON        0x00000100    /* canonicalize input lines */
  161. #ifndef _POSIX_SOURCE
  162. #define ALTWERASE    0x00000200    /* use alternate WERASE algorithm */
  163. #endif  /*_POSIX_SOURCE */
  164. #define    IEXTEN        0x00000400    /* enable DISCARD and LNEXT */
  165. #define EXTPROC         0x00000800      /* external processing */
  166. #define TOSTOP        0x00400000    /* stop background jobs from output */
  167. #ifndef _POSIX_SOURCE
  168. #define FLUSHO        0x00800000    /* output being flushed (state) */
  169. #define    NOKERNINFO    0x02000000    /* no kernel output from VSTATUS */
  170. #define PENDIN        0x20000000    /* XXX retype pending input (state) */
  171. #endif  /*_POSIX_SOURCE */
  172. #define    NOFLSH        0x80000000    /* don't flush after interrupt */
  173.  
  174. typedef unsigned long    tcflag_t;
  175. typedef unsigned char    cc_t;
  176. typedef long        speed_t;
  177.  
  178. struct termios {
  179.     tcflag_t    c_iflag;    /* input flags */
  180.     tcflag_t    c_oflag;    /* output flags */
  181.     tcflag_t    c_cflag;    /* control flags */
  182.     tcflag_t    c_lflag;    /* local flags */
  183.     cc_t        c_cc[NCCS];    /* control chars */
  184.     long        c_ispeed;    /* input speed */
  185.     long        c_ospeed;    /* output speed */
  186. };
  187.  
  188. /* 
  189.  * Commands passed to tcsetattr() for setting the termios structure.
  190.  */
  191. #define    TCSANOW        0        /* make change immediate */
  192. #define    TCSADRAIN    1        /* drain output, then change */
  193. #define    TCSAFLUSH    2        /* drain output, flush input */
  194. #ifndef _POSIX_SOURCE
  195. #define TCSASOFT    0x10        /* flag - don't alter h.w. state */
  196. #endif
  197.  
  198. /*
  199.  * Standard speeds
  200.  */
  201. #define B0    0
  202. #define B50    50
  203. #define B75    75
  204. #define B110    110
  205. #define B134    134
  206. #define B150    150
  207. #define B200    200
  208. #define B300    300
  209. #define B600    600
  210. #define B1200    1200
  211. #define    B1800    1800
  212. #define B2400    2400
  213. #define B4800    4800
  214. #define B9600    9600
  215. #define B19200    19200
  216. #define B38400    38400
  217. #ifndef _POSIX_SOURCE
  218. #define B7200    7200
  219. #define B14400    14400
  220. #define B28800    28800
  221. #define B57600    57600
  222. #define B76800    76800
  223. #define B115200    115200
  224. #define B230400    230400
  225. #define EXTA    19200
  226. #define EXTB    38400
  227. #endif  /* !_POSIX_SOURCE */
  228.  
  229. #ifndef KERNEL
  230.  
  231. #define    TCIFLUSH    1
  232. #define    TCOFLUSH    2
  233. #define TCIOFLUSH    3
  234. #define    TCOOFF        1
  235. #define    TCOON        2
  236. #define TCIOFF        3
  237. #define TCION        4
  238.  
  239. #include <sys/cdefs.h>
  240.  
  241. __BEGIN_DECLS
  242. speed_t    cfgetispeed __P((const struct termios *));
  243. speed_t    cfgetospeed __P((const struct termios *));
  244. int    cfsetispeed __P((struct termios *, speed_t));
  245. int    cfsetospeed __P((struct termios *, speed_t));
  246. int    tcgetattr __P((int, struct termios *));
  247. int    tcsetattr __P((int, int, const struct termios *));
  248. int    tcdrain __P((int));
  249. int    tcflow __P((int, int));
  250. int    tcflush __P((int, int));
  251. int    tcsendbreak __P((int, int));
  252.  
  253. #ifndef _POSIX_SOURCE
  254. void    cfmakeraw __P((struct termios *));
  255. int    cfsetspeed __P((struct termios *, speed_t));
  256. #endif /* !_POSIX_SOURCE */
  257. __END_DECLS
  258.  
  259. #endif /* !KERNEL */
  260.  
  261. #ifndef _POSIX_SOURCE
  262.  
  263. /*
  264.  * Include tty ioctl's that aren't just for backwards compatibility
  265.  * with the old tty driver.  These ioctl definitions were previously
  266.  * in <sys/ioctl.h>.
  267.  */
  268. #include <sys/ttycom.h>
  269. #endif
  270.  
  271. /*
  272.  * END OF PROTECTED INCLUDE.
  273.  */
  274. #endif /* !_SYS_TERMIOS_H_ */
  275.  
  276. #ifndef _POSIX_SOURCE
  277. #include <sys/ttydefaults.h>
  278. #endif
  279.